//1导入mongoose
const mongoose = require('mongoose');
//2链接mongodb服务
mongoose.connect('mongodb://127.0.0.1:27017/bilibili');
//3设置回调
//设置连接成功的回调
mongoose.connection.once('open',()=>{
    console.log('连接成功');
    //这里的代码写在回调函数里只是中间的过程，将来学promise还有一种更为简洁的写法
    //4.创建文档的结构对象,Schema单词本义是模式的意思，可以理解是结构，这个结构对象可以约束集合中文档的属性以及属性值的类型
    let BookSchema = new mongoose.Schema({name:String,author:String,price:Number})
    //5.设置模型对象，对文档操作（增删改查）的封装对象,第一个参数是操作的集合名称，第二个参数是结构对象
    let BookModel = mongoose.model('books',BookSchema);
    //6.新增,第一个参数是数据对象，第二个参数是回调函数,它有两个形参，第一个是错误对象，第二个是插入成功后的文档对象
    // BookModel.create({name:'西游记',author:'吴承恩',price:19.9},(err,data)=>{
    //     //判断是否有错误
    //     if(err){
    //         console.log(err);
    //         return;
    //     }
    //     //如果没有错误，则输出插入后的文档对象
    //     console.log(data);
    //     //7.关闭数据库连接,项目运行中不会添加该代码
    //     mongoose.disconnect();
    // })
    //6.新增，用promise
    BookModel.create({name:'西游记',author:'吴承恩',price:19.9}).then((data)=>{
        console.log('插入成功',data);//插入成功
    }).catch((res)=>{
        console.log('插入失败',res)//插入失败
    })
})
//设置连接错误的回调
mongoose.connection.on('error',()=>{
    console.log('连接失败');
})
//设置连接关闭的回调
mongoose.connection.on('close',()=>{
    console.log('连接关闭');
})
//关闭mongodb的连接，会调上面连接关闭的回调
// setTimeout(()=>{
//     mongoose.disconnect();
// },2000)